package com.zliblike_platform.service;

import com.zliblike_platform.dto.CommentDTO;
import com.zliblike_platform.vo.CommentVO;
import com.zliblike_platform.vo.PageResult;

/**
 * 评论服务接口
 */
public interface CommentService {
    
    /**
     * 添加书籍评论
     * @param userId 用户ID
     * @param bookId 书籍ID
     * @param commentDTO 评论信息
     * @return 评论ID
     */
    Long addBookComment(Long userId, Long bookId, CommentDTO commentDTO);
    
    /**
     * 添加书单评论
     * @param userId 用户ID
     * @param listId 书单ID
     * @param commentDTO 评论信息
     * @return 评论ID
     */
    Long addListComment(Long userId, Long listId, CommentDTO commentDTO);
    
    /**
     * 删除评论
     * @param userId 用户ID
     * @param commentId 评论ID
     * @return 是否成功
     */
    boolean deleteComment(Long userId, Long commentId);
    
    /**
     * 点赞评论
     * @param userId 用户ID
     * @param commentId 评论ID
     * @return 点赞后的数量
     */
    int likeComment(Long userId, Long commentId);
    
    /**
     * 取消点赞
     * @param userId 用户ID
     * @param commentId 评论ID
     * @return 取消点赞后的数量
     */
    int unlikeComment(Long userId, Long commentId);
    
    /**
     * 分页获取书籍评论
     * @param bookId 书籍ID
     * @param userId 当前用户ID（用于判断是否点赞）
     * @param page 页码
     * @param size 每页大小
     * @return 评论分页结果
     */
    PageResult<CommentVO> getBookComments(Long bookId, Long userId, int page, int size);
    
    /**
     * 分页获取书单评论
     * @param listId 书单ID
     * @param userId 当前用户ID（用于判断是否点赞）
     * @param page 页码
     * @param size 每页大小
     * @return 评论分页结果
     */
    PageResult<CommentVO> getListComments(Long listId, Long userId, int page, int size);
} 